#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>

void Show(double);
const int LIM = 6;

int main()
{
	using namespace std;
	double arr1[LIM] = {28,28,30,35,38,59};
	double arr2[LIM] = {63,65,69,75,80,99};
	vector<double> gr8(arr1,arr1 + LIM);
	vector<double> m8(arr2, arr2 + LIM);
	cout.setf(ios_base::fixed);
	cout.precision(1);
	cout << "gr8:\t";
	for_each(gr8.begin(), gr8.end(),Show);
	cout << endl;
	cout << "m8: \t";
	for_each(m8.begin(),m8.end(),Show);
	cout << endl;

	vector<double> sum(LIM);
	transform(gr8.begin(),gr8.end(),m8.begin(),sum.begin(),plus<double>());
	cout << "sum: \t";
	for_each(sum.begin(), sum.end(),Show);
	cout << endl;

	vector<double> prod(LIM);
	transform(gr8.begin(),gr8.end(),prod.begin(),bind1st(multiplies<double>(),2.5));
	cout << "prod:\t";
	for_each(prod.begin(),prod.end(),Show);
	cout << endl;

	std::cin.get();
	return 0;
}

void Show(double v)
{
	std::cout.width(6);
	std::cout << v << ' ';
}